package com.wyvoid.forum.dao;

import com.wyvoid.core.persistent.Pagination;
import com.wyvoid.core.persistent.hibernate.HibernatePage;
import com.wyvoid.core.persistent.hibernate.IHibernateDAO;
import com.wyvoid.forum.domain.Post;
import com.wyvoid.forum.web.search.SearchBean;

/**
 * 帖子回复模块数据处理接口
 * 
 * @author wyvoid
 * @link www.wyvoid.com
 */
public interface IPostDAO extends IHibernateDAO<Post> {


	/**
	 * 列表全部的帖子
	 * 
	 * @param topicId 主题编号
	 * @param pagination 分页参数
	 * @return QueryResult 帖子集合
	 */
	public HibernatePage<Post> getPosts(final long topicId, final Pagination pagination);
	
	/**
	 * 取得贴子总数
	 * @return 贴子总数
	 */
	public long countPost();
	
	/**
	 * 根据论坛编号取得贴子总数
	 * @param forumId 论坛编号
	 * @return 贴子总数
	 */
	public long countPost(int forumId);
	
	/**
	 * 根据论坛编号取得今日贴子总数
	 * @param forumId 论坛编号
     * @param beginTime 开始时间
     * @param endTime 结束时间
	 * @return 贴子总数
	 */
	public long countTodayPost(int forumId,String beginTime,String endTime) ;
	
	/**
	 * 根据主题批量删除帖子
	 * 
	 * @param topicId 主题编号
	 *
	 */
	public void deletePosts(int topicId) ;

	
	/**
	 * 移动帖子
	 *
	 * @param topicId 主题编号
	 * @param forumId 论坛编号
	 *
	 */
	public void movePost(int topicId,int forumId) ;

    HibernatePage<Post> searchPosts(SearchBean searchBean, Pagination pagination);

    void indexAll();
}
